#ifndef CARVERPANEL_H
#define CARVERPANEL_H

#include <BSet>
#include <BViewer>
#include <BCamera>
#include <BTerrain>
#include <BButton>
#include <BCheckBox>
#include <BComboBox>
#include <BListWidget>
#include <BGroupBox>
#include <BSpinBox>
#include <BButtonGroup>
#include <BListWidget>
#include <BTableWidget>
#include <BFileDialog>
#include <BSlider>
#include <BRealSlider>
#include <BRealSpinBox>
#include <BTreeWidget>
#include <BProgressBar>

using namespace BWE;

class CarverHandler;

class CarverDialog : public BDialog
{
	BOBJECT(CarverDialog);
public:
	CarverDialog(BWidget* parent = 0);
	~CarverDialog();
	
	void setTerrain(BTerrain* terrain);
	BTerrain* terrain() const;

protected:
	void assignItemIcon(BTreeItem* item);

protected:
	void slotBrushSizeChanged(BObject* object, const BValue& value);
	void slotBrushIntensityChanged(BObject* object, const BValue& value);
	void slotShowPointsChecked(BObject* object, const BValue& value);

protected:
	virtual void showEvent(const BEvent& event);
	virtual void hideEvent(const BEvent& event);

private:
	BSlider*			_brushSizeSlider;
	BSpinBox*			_brushSizeSpinBox;
	BSlider*			_brushIntensitySlider;
	BSpinBox*			_brushIntensitySpinBox;
	BCheckBox*			_showPointsCheckBox;

	BButton*			_maskButton;
	BButton*			_maskReverseButton;
	BButton*			_maskCleanButton;

	CarverHandler*		_carverHandler;
};

#endif
